package cn.anl.result;

import cn.anl.constant.HttpStatus;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.omg.CORBA.DynAnyPackage.Invalid;

@Getter
@AllArgsConstructor
public enum ApiResponseEnum {
  
    // 定义枚举实例，每个实例代表一个可能的响应  
    SUCCESS(HttpStatus.SUCCESS, "操作成功"),
    NOT_FOUND(HttpStatus.NOT_FOUND, "未找到资源"),
    BAD_REQUEST(HttpStatus.BAD_REQUEST, "请求错误"),
    UNAUTHORIZED(HttpStatus.UNAUTHORIZED, "未授权"),
    FORBIDDEN(HttpStatus.FORBIDDEN, "禁止访问"),
    INTERNAL_SERVER_ERROR(HttpStatus.ERROR, "服务器内部错误"),
    INVALID_AUTHORIZATION_CERTIFICATE(HttpStatus.FORBIDDEN,"授权凭证失效,请重新登录");
    private final int code;  
    private final String message;

    // 示例：将枚举转换为JSON字符串，可能需要引入JSON处理库，如Jackson或Gson
    // 注意：这里仅提供思路，实际实现依赖于具体的JSON库  
    // public String toJson() {  
    //     return JsonUtils.toJson(this); // 假设的JsonUtils类，实际中需要根据所选的JSON库来实现  
    // }  
  
    // 示例：静态方法，根据状态码查找对应的枚举实例，如果不存在则返回null或抛出异常  
    public static ApiResponseEnum fromCode(int code) {
        for (ApiResponseEnum apiResponseEnum : ApiResponseEnum.values()) {
            if (apiResponseEnum.getCode() == code) {
                return apiResponseEnum;
            }  
        }  
        return null; // 或者抛出一个IllegalArgumentException("No such response enum for code: " + code);  
    }  
}